/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sv.com.intesal.proyecto.controlador;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.abstracts.ControladorAbstract;
import sv.com.intesal.proyecto.bean.TipoProyecto;
import sv.com.intesal.proyecto.bean.TipoProyectoProducto;
import sv.com.intesal.proyecto.sql.SQLTipoProyectoProducto;

/**
 *
 * @author ejerez
 */
public class TipoProyectoProductoControlador  extends ControladorAbstract {

    public void insert(TipoProyectoProducto tpp) throws Exception {
        try {
            super.setPreparedStatement(SQLTipoProyectoProducto.insert);
            super.ps.setInt(1, tpp.getCodigo_tp());
            super.ps.setInt(2, tpp.getCodigo_p());
            super.ps.setDouble(3, tpp.getCantidad_tpp());
            super.ps.setString(4, super.v.getEstado(tpp.getEstado_filtro_tpp()));
            super.ps.executeUpdate();

        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public void update(TipoProyectoProducto tpp) throws Exception {
        try {
            super.setPreparedStatement(SQLTipoProyectoProducto.update);
            super.ps.setInt(1, tpp.getCodigo_tp());
            super.ps.setInt(2, tpp.getCodigo_p());
            super.ps.setDouble(3, tpp.getCantidad_tpp());
            super.ps.setString(4, super.v.getEstado(tpp.getEstado_filtro_tpp()));
            super.ps.setInt(5, tpp.getCodigo_tpp());
            super.ps.executeUpdate();
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public List<TipoProyectoProducto> getTipoProyectoProductos() throws Exception {
        List<TipoProyectoProducto> lista = new ArrayList<TipoProyectoProducto>();
        try {
            this.getExecuteQuery(SQLTipoProyectoProducto.getTipoProyectoProductos);
            while (super.rs.next()) {
                lista.add(this.getTipoProyectoProducto(super.rs));
            }
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public List<TipoProyectoProducto> getTipoProyectoProductosActivos() throws Exception {
        List<TipoProyectoProducto> lista = new ArrayList<TipoProyectoProducto>();
        try {
            this.getExecuteQuery(SQLTipoProyectoProducto.getTipoProyectoProductosActivos);
            while (super.rs.next()) {
                lista.add(this.getTipoProyectoProducto(super.rs));
            }
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    private TipoProyectoProducto getTipoProyectoProducto(ResultSet rs) throws Exception {
        try {
            TipoProyectoProducto tpp = new TipoProyectoProducto();
            tpp.setCodigo_tpp(rs.getInt("codigo_tpp"));
            tpp.setCantidad_tpp(rs.getDouble("cantidad_tpp"));
            tpp.setEstado_tpp(rs.getString("estado_tpp"));
            tpp.setEstado_filtro_tpp(v.getEstado(rs.getString("estado_tpp")));

            /*PRODUCTO*/
            tpp.setCodigo_p(rs.getInt("codigo_p"));
            tpp.setNombre_p(rs.getString("nombre_p"));

            /*TIPO_PRODUCTO*/
            tpp.setCodigo_tp(rs.getInt("codigo_tp"));
            tpp.setNombre_tp(rs.getString("nombre_tp"));

            return tpp;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public List<TipoProyecto> getTipoProyectosActivos()throws Exception{
        try {
            TipoProyectoControlador tp=new TipoProyectoControlador();
            return tp.getTipoProyectosActivos();
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}
